/* eslint-disable */
function insertText(textDom, value) {
  textDom.focus()
  var startPos = getSelection(textDom).start
  var endPos = getSelection(textDom).end
  textDom.value = textDom.value.substring(0, startPos) + value + textDom.value.substring(endPos, textDom.value.length)
  textDom.selectionStart = startPos + value.length
  textDom.selectionEnd = startPos + value.length
  textDom.dispatchEvent(new Event('input')) // 触发更新v-model
}
// 获取焦点起始坐标
function getSelection(el) {
  var start = 0,
    end = 0,
    normalizedValue,
    range,
    textInputRange,
    len,
    endRange

  if (typeof el.selectionStart == 'number' && typeof el.selectionEnd == 'number') {
    start = el.selectionStart
    end = el.selectionEnd
  } else {
    // 兼容IE用的
    range = document.selection.createRange()
    if (range && range.parentElement() == el) {
      len = el.value.length
      normalizedValue = el.value.replace(/\r\n/g, '\n')

      // Create a working TextRange that lives only in the input
      textInputRange = el.createTextRange()
      textInputRange.moveToBookmark(range.getBookmark())

      // Check if the start and end of the selection are at the very end
      // of the input, since moveStart/moveEnd doesn't return what we want
      // in those cases
      endRange = el.createTextRange()
      endRange.collapse(false)

      if (textInputRange.compareEndPoints('StartToEnd', endRange) > -1) {
        start = end = len
      } else {
        start = -textInputRange.moveStart('character', -len)
        start += normalizedValue.slice(0, start).split('\n').length - 1

        if (textInputRange.compareEndPoints('EndToEnd', endRange) > -1) {
          end = len
        } else {
          end = -textInputRange.moveEnd('character', -len)
          end += normalizedValue.slice(0, end).split('\n').length - 1
        }
      }
    }
  }
  return {
    start: start,
    end: end
  }
}
export default insertText
/* eslint-enable */
